package exercise2;

import java.util.ArrayList;
import java.util.Collections;

public class MyThread extends Thread{
    //{10，5，20，50，100，200，500，800，2，80，300，700}
    /**
     * 要考虑元素不重复  所以用集合比用数组合适
     * 在成员位置定义集合，补构造方法，在创建本类对象时，把集合传递进来
     */
    ArrayList<Integer> list;

    public MyThread(ArrayList<Integer> list) {
        this.list = list;
    }

    @Override
    public void run() {
        while (true){
            synchronized (MyThread.class){
                if (list.size()==0){
                    break;
                }else {
                    //继续抽奖
                    Collections.shuffle(list); //打乱集合中的元素
                    Integer price = list.remove(0);   //remove方法会去除某个元素并将去除的元素返回
                    System.out.println(getName()+"又产生了一个"+price+"元大奖！！！");
                }
            }
            //数据过少，某个线程抢到CPU执行权会“刷”的一下全执行完
            //可以让他在此处睡眠10ms  给另一个线程争取机会
            //如果睡眠部份放在锁里面效果不明显 因为他还占着CPU的执行权
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
